/**
 * ts中类的定义
 * class 类名{
 *    属性:类型=初始值
 *    方法名(参数:类型):返回值类型{}
 *    方法名=（参数：类型）：返回类型=>{}
 * 二、对象封装
 * 1、将属性私有化：在要修饰的属性的前面使用private关键字来修饰，这样的修饰后该属性就变成私有的，私有的属性只能类的内部才能访问
 * 2、为私有属性提供set方法和get方法
 *  
 */
class Person{
    private _name:string=""
    private _age:number=0
    set name(arg:string){
        if(/^[a-zA-Z]\w{5,}$/.test(arg)){
            this._name=arg
        }else{
            throw new Error('姓名不符合要求')
        }
    }
    get name(){
        return this._name
    }
    set age(arg:number){
        if(arg>0&&arg<=120){
            this._age=arg
        }else{
            throw new Error('年龄不符合要求，必须要在0-120之间')
        }
    }
    get age(){
        return this._age
    }
    show(){
        return `我叫${this._name},我今年${this._age}岁`
    }
}
let pp1=new Person()
pp1.name="Giles1222"
pp1.age=20
console.log(pp1.show());

